                                      AT90S8515
                                    ______  ______                      
                                   |     |__|     |                         
                           T0/PB0--| 1         40 |--VCC                     
                           T1/PB1--| 2         39 |--PA0/AD0                     
                         AIN0/PB2--| 3         38 |--PA1/AD1 
                         AIN1/PB3--| 4         37 |--PA2/AD2 
                           SS/PB4--| 5         36 |--PA3/AD3      
                         MOSI/PB5--| 6         35 |--PA4/AD4 
                         MISO/PB6--| 7         34 |--PA5/AD5      
                          SCK/PB7--| 8         33 |--PA6/AD6  
                            RESET->| 9         32 |--PA7/AD7 
                          RXD/PD0--| 10        31 |--ICP  = Captura Del Contador/Timer1
                          TXD/PD1--| 11        30 |--ALE                     
                         INT0/PD2--| 12        29 |--OCB1 = Comparacion Del Contador/Timer1                    
                         INT1/PD3--| 13        28 |--PC6/A15
                              PD4--| 14        27 |--PC6/A14
                         0C1A/PD5--| 15        26 |--PC5/A13
                           WR/PD6--| 16        25 |--PC4/A12
                           RD/PD7--| 17        24 |--PC3/A11      
                            XTAL2--| 18        23 |--PC2/A10
                            XTAL1--| 19        22 |--PC1/A9 
                              GND--| 20        21 |--PC0/A8 
                                   |______________|

Los 2 Registros Contadores Principales Del Control Del Timer 1 Se Llaman TCCR1A Y TCCR1B
 
;TCCR1A               ;TCCR1B
  
.equ	COM1A1	=7    .equ	ICNC1	=7
.equ	COM1A0	=6    .equ	ICES1	=6
.equ	COM1B1	=5    .equ	CTC1	=3
.equ	COM1B0	=4    .equ	CS12	=2
.equ	PWM11	=1    .equ	CS11	=1
.equ	PWM10	=0    .equ	CS10	=0

El Contador Del Timer1 Es Decir El Contenido De TCNT1 
Evoluciona Desde $0000 Hasta Un Valor Maximo Llamado TOP
Donde Este Valor Una Vez Alcanzado Su Valor Cambia El Contador
Automaticamente De Sentido De Funcionamiento Y Se Pone A Descontar 
Hasta $0000 Valor De La Cual Vuelve A Salir Seguidamente De Nuevo 
Hacia TOP Y Asi Seguido Donde El Ciclo Se Renueva Sin Interrupcion Durante 
Estos Conteos Y Desconteos Sucesivos Y En Todas Aquellas Vez En Cuando El Valor
Contenido En TCNT1 Sea Igual Al Contenido De OCR1A O Bien OCR1B

Las Salidas Correspondientes Que Son OC1A Y OC1B ( Patillas del Atmel PD5 Y PD4 )
Seran Activadas Siguiendo El Modo Definido Elegido A Traves 
De Los Bits De Registros De Control Indicado Segun Lo Configurado

REGISTROS Y FUNCIONAMIENTO EN MODO NORMAL   
                                         __________________                                               
                                         |__MODO__NO__PWM__|
                                         |_________________| 


De Los 2 Registros Del Timer 1 
El Primer Registro TCCR1A Esta Organizado De La Manera Siguiente  

;TCCR1A: 1 Registro De Control Del Timer 1
;|------|------|------|------|------|------|-----|-----|  
;|COM1A1|COM1A0|COM1B1|COM1B0|------|------|PWM11|PWM10|/ Bits 7 Y 6 Para Comparar Las Salidas De OC1A(Compare Output Mode Timer1A)
;|------|------|------|------|------|------|-----|-----|\ Bits 5 Y 4 Para Comparar Las Salidas De OC1B(Compare Output Mode Timer1B)
 
 Los Bits COM1A1- COM1A0 - COM1B1- COM1B0    
 Estos Bits Definen El Modo Que Produce La Salida OC1A = PD5 Y OC1B = PD4 A La Hora De Comparar 
 Con El Registro De Comparacion OCR1A o Bien OCR1B Y El Contador TCNT1 A La Hora De Ser Ambos Iguales 

Tabla1: Las Diferentes Maneras De Configurarlo :
_______________________________________
 COM1X1 | COM1X0 | Efecto Sobre OC1A Y OC1B          
_______________________________________
   0    |   0    |Salidas Del Timer1 Desconectadas De Las Salidas OC1x ( Siendo x A o B )                     
_______________________________________ 
   0    |   1    |Cambio De Estados De La Salida OC1x (Si Hay 1 Pone 0 Y Viceversa)                    
_______________________________________ 
   1    |   0    |Puesta A 0 De La Salida OC1x                     
_______________________________________ 
   1    |   1    |Puesta A 1 De La Salida OC1x                     
_______________________________________
 
.........................................................................................................
                                         ______________                                              
              Mismo Timer Pero En Forma  |__MODO__PWM__|
                                         |_____________|
 
;TCCR1A: 1 Registro De Control Del Timer 1
;|------|------|------|------|------|------|-----|-----|  
;|COM1A1|COM1A0|COM1B1|COM1B0|------|------|PWM11|PWM10| Bit 1 \ Permiten Selecionnar El Modo De 
;|------|------|------|------|------|------|-----|-----| Bit 0 / Funcionamiento PWM Segun Lo Configurado

Los Bits PWM11 Y PWM10 = Pulse With Modulator 1
Estos Bits Permiten Elegir Un PWM Sobre 8  9 o 10 Bits 
Lo Que Define La Capacidad Maxima Del Contador TCNT1 (255  511 o 1023)

Tabla 3: Las Diferentes Maneras De Configurarlo :
________________________________________
 PWM11 |PWM10| Modo de Funcionamiento 
________________________________________
   0   |  0  | Modo Normal ( No PWM)
________________________________________
   0   |  1  | PWM 8 Bits 
________________________________________
   1   |  0  | PWM 9 Bits 
________________________________________
   1   |  1  | PWM 10 Bits 
________________________________________


Obtenemos Asi Los Valores Maximales De Conteos 
Correspondiente Segun la Frecuencia De La Seal PWM 
Generada (Con Ftck1 = Frecuencia Clock) 

Valores De TOP Y Frecuencia De La Seal Generada En Modo PWM
Tabla 4: Las Diferentes Maneras De Configurarlo :
____________________________________________________
   PWM  | Valor Maximo Del Contador | Frecuencia Clock 
____________________________________________________
 8 Bits |    $00FF (256)            |  FTCK1/512
____________________________________________________
 9 Bits |    $01FF (512)            |  FTCK1/1024
____________________________________________________
10 Bits |    $03FF (1024)           |  FTCK1/2048
_____________________________________________________ 


  

Configuracion Para Producir Una Seal PWM Sobre La Salida OC1A Y OC1B:
.......................................................................

El Valor Colocado En OCR1x Fija El Valor Ciclico De La Seal PWM 
Los Bits COM1X1 Y COM1X0 Son Los Que Permiten Selecionnar 
La Seal PWM Generada Sobre La Salida OC1A Y OC1B                     
_____________________________________________________________________________________________________
 COM1X1 | COM1X0 | Efecto Sobre OC1A Y OC1B  
_____________________________________________________________________________________________________
   0    |   0    | No Conectada Al Timer 
-----------------------------------------------------------------------------------------------------
   0    |   1    | No Conectada Al Timer
-----------------------------------------------------------------------------------------------------
   1    |   0    |                           
        |        | Puesto A 1 Sobre Una Igualdad Con 0CR1A O B En Modo DesContador ( Modo PWM )
-----------------------------------------------------------------------------------------------------
   1    |   1    | 
        |        | Puesto A 1 Sobre Una Igualdad Con 0CR1A O B En Modo Contador ( Modo PWM Invertido) 
_____________________________________________________________________________________________________  



.............................................................................................................

                     Resumiendo En Forma De Tabla El 1 Registro Del Timer 1 
                     *******************************************************

;TCCR1A: 1 Registro De Control Del Timer 1

 |------|------|------|------|------|------|-----|-----|  
 |COM1A1|COM1A0|COM1B1|COM1B0|------|------|PWM11|PWM10|
 |--.---|--.---|--.---|--.---|------|------|--.--|--.--|
    .      .      .      .                    . .....
    .      .      .      .                    . .
    .      .      .      .                  __._.____________________
    .      .      .      .                  |0|0| PWM NO CONECTADO   |
    .      .      .      .                  |_|_|____________________|
    .      .      .      .                  |0|1| 8 BIT PWM CONECTADO|
    .      .      .      .                  |_|_|____________________|
    .      .      .      .                  |1|0| 9 BIT PWM CONECTADO|
    .      .      .      .                  |_|_|____________________|
    .      .      ........                  |1|1|10 BIT PWM CONECTADO|
    .      ........                         |_|_|____________________|
    .      .    ______________                                              
 .<=.........>=.|__MODO__PWM__|
 v              |_____________|   
 . |___|___|________________________________________________________________________________|
 . | 0 | 0 | No Conectada Al Timer                                                          |
 . |___|___|________________________________________________________________________________|
 . | 0 | 1 | No Conectada Al Timer                                                          |
 . |___|___|________________________________________________________________________________|
 . | 1 | 0 |Puesto A 1 Sobre Una Igualdad Con 0CR1A O B En Modo DesContador Modo PWM        |
 . |___|___|________________________________________________________________________________|
 . | 1 | 1 |Puesto A 1 Sobre Una Igualdad Con 0CR1A O B En Modo Contador  Modo PWM Invertido|
 . |___|___|________________________________________________________________________________|
 .
 .
 . 
 v              __________________                                              
 ............>=.|__MODO__NO__PWM__|
                |_________________|   
   |___|___|________________________________________________________________________________|
   | 0 | 0 | Salidas Del Timer1 Desconectadas De Las Salidas OC1x No Hace Nada En El Pin OC1|
   |___|___|________________________________________________________________________________|
   | 0 | 1 | Cambio De Estados De La Salida OC1x (Si Hay 1 Pone 0 Y Viceversa)              |
   |___|___|________________________________________________________________________________|
   | 1 | 0 | Puesto A 0 Sobre Una Igualdad Con 0CR1A O B En Modo Contador                   |
   |___|___|________________________________________________________________________________|
   | 1 | 1 | Puesto A 0 Sobre Una Igualdad Con 0CR1A O B En Modo DesContador                |
   |___|___|________________________________________________________________________________|
   
;....................................................................................................
 
Un Segundo Registro De Control Es Necesario Para Definir Las Multiples Modos De Funcionamiento Del Timer 1 ( TCCRB) 
El Segundo Registro TCCR1B Esta Organizado De La Manera Siguiente
 
;TCCR1B: 2Registro De Control Del Timer 1 
;|------|------|------|------|------|------|-----|-----|  
;|ICNC1 |ICES1 |------|------| CTC1 | CS12 | CS11|CS10 |
;|------|------|------|------|------|------|-----|-----|


Los Bits ICNC1 et ICES1 Definen El Modo De Foncionamiento De Entrada De Captura ICP

El Bit ICNC1: 
Cuando Esta A 1 Pone en Funcion El Reductor De Ruido Que Permite Evitar 
La Toma En Cuenta De Parasitos

El Bit ICES1:
Este Bit Selecionna El Tipo De Flanco Activo 
Si Esta A 1 = Flanco De Subida
Si Esta A 0 = Flanco De Bajada
Cuando Un Flanco Activo Se Produce Sobre La Entrada ICP ( Patilla del Atmel 31) 
El Contenido Del Contador TCNT1 Es Transferido En El Registro De Captura ICR1  


El Bit 3 (CTC1)( Clear-on-Terminal-Count ) Define El Modo De Funcionamiento Del TCNT1
Cuando Este Bit Esta A 1 El Registro De Conteo TCNT1 Esta Puesto De Nuevo A 0
Despues De Que Una Comparacion A Sido Validada (TCNT1 = OCR1A)
Cuando Este Bit Esta A 0 El Registro De Conteo TCNT1 Se Pone En Conteo Continuo 
Hasta La Capacidad Maxima ($0000 - $FFFF) Y El Ciclo recomienza 

Los Bits CS12 - CS11- CS10 
Estos Bits Definen El Modo De Seleccion De Reloj Del Contador TCNT1 
Segun La Configuracion Elegida 

Tabla 2: Las Diferentes Maneras De Configurarlo :
______________________________________________________
| CS12 | CS11 | CS10 |                  
______________________________________________________
|  0   |  0   |  0   | Ninguna El Contador Esta Parado  
______________________________________________________
|  0   |  0   |  1   | Reloj Systema / Clock           
______________________________________________________
|  0   |  1   |  0   | Reloj Systema /   8  (CK)      
______________________________________________________
|  0   |  1   |  1   | Reloj Systema /  64  (CK)      
______________________________________________________
|  1   |  0   |  0   | Reloj Systema / 256  (CK)      
______________________________________________________
|  1   |  0   |  1   | Reloj Systema /1024  (CK)      
______________________________________________________
|  1   |  1   |  0   | Reloj Externo Sobre T1 , Flanco De Bajada
______________________________________________________ 
|  1   |  1   |  1   | Reloj Externo Sobre T1 , Flanco De Subida
______________________________________________________

 Para Calcular Utilizamos Esta Formula
Siendo Esto Un Ejemplo :

18432 / 1024 = 18  (Divisor 1024, Contador 17)
RATE = 18432000/(1024*X)  Donde X Es El Valor En OCR1A
Hay Que Restarle 1 Para Empezar El Contador Desde cero 
Asi Que Para Sacar La Cuenta Para OCR1A
OCR1A = (18432000/(1024*RATE))-1  Donde: RATE Es La Frecuencia Deseada 


El Estado De La Salida OC1x Depende Del Resultado De La Comparacin Entre OCR1x y TCNT1
 
- Si OCR1x > TCNT1 Entonces OC1x = 1 
- Si OCR1x < TCNT1 Entonces OC1x = 0 

                      
                                    / = Valor Del Contador (TCNT1)
\    /\    /\    /\    /\    /\    /
 \  /  \  /  \  /  \  / -\--/--\--/ = Compara El Valor Del Cambio 
--\/----\/----\/----\/--| \/    \/
   ___   ___   ___   ___   _____
___| |___| |___| |___| |___|   |__PMW Output OC1x Pin



.............................................................................................................

                     Resumiendo En Forma De Tabla El 2 Registro Del Timer 1 
                     ***********************************************************

;TCCR1B: 2Registro De Control Del Timer 1 
;|------|------|------|------|------|------|-----|-----|  
;|ICNC1 |ICES1 |------|------| CTC1 | CS12 | CS11|CS10 |
;|------|------|------|------|------|------|-----|-----|
    .      .                   .       |      |     |
    .      .                   .       |>=....|>=...|>=......>=.______________________________________________________
    .      .                  ._._______________________________ |  0   |  0   |  0   | Ninguna El Contador Esta Parado  
    .      .                  |0| Conteo Continuo $0000 - $FFFF| |_____________________________________________________
    .      .                  |_|______________________________| |  0   |  0   |  1   | Reloj Systema / Clock           
    .      .                  |1| Comparacion  TCNT1 = OCR1A   | |_____________________________________________________
    .      .                  |_|______________________________| |  0   |  1   |  0   | Reloj Systema /   8  (CK)      
   |___|___|________________________|                            |_____________________________________________________
   | 1 | - | Reductor De Ruido      |                            |  0   |  1   |  1   | Reloj Systema /  64  (CK)      
   |___|___|________________________|                            |_____________________________________________________
   | - | 1 | Flanco De Subida       |                            |  1   |  0   |  0   | Reloj Systema / 256  (CK)  
   |___|___|________________________|                            |_____________________________________________________
   | - | 0 | Flanco De Bajada       |                            |  1   |  0   |  1   | Reloj Systema /1024  (CK)      
   |___|___|________________________|                            |_____________________________________________________
                                                                 |  1   |  1   |  0   | Reloj Ext Sobre T1,Flanco De Bajada
                                                                 |_____________________________________________________
                                                                 |  1   |  1   |  1   | Reloj Ext Sobre T1,Flanco De Subida
                                                                 |______________________________________________________  

Espero Haberte Ayudado 
Belgi










